Communications Time Monitor Version 3.0.2

Release Date: 12-November-95

Copyright © 1995, Scott A. Craig - All Rights Reserved

NOTE:	Regardless of how accurate any Timer software is, if you are on a Time Limited account, it is still important to occasionally check your  Official connect time on your provider.  The difference in the point where a Timer program begins and ends logging time as opposed to the points at which your provider begins and ends can build up.  It is strongly recommended that you occasionally request the Official time from your provider, and update the counters in this software to match exactly.

Read These Sections Before Using This Software

 Copyright Information and Disclaimer

 Problem Reports and/or Reaching the Author

 Credits

General Information ...

 Program Installation

 Introduction and Features List

 Common Problems

 Program Operation

 Dial-Up Network Operation

 Program Configuration

 Connection Configuration

 Example Configurations

 Command Line Parameters

 Revision History

 Known Problems

 How CCM Detects a Carrier

 Clipboard Capture

 Initialization File Structure


Dial-Up Networking
Dial-Up Networking Operation

The ability to execute Dial-Up Networking connections was the main reason for the addition of the 32-bit version to the CCM line.  The 16-bit version does not have this capability, and is is something that has been widely requested by users who have written to me.

NOTICE:	This program DOES NOT configure the Dial-Up Networking connections for you.  To be able to Launch a DUN connection, it must have already been configured properly.  This program only accesses the connections that have already been set up.

Dial-Up Networking is accomplished through the use of the [LAUNCH] button on the main dialog, or by passing a Launch command on the command line as a parameter to the program.

Before you can Launch a Dial-Up Networking connection, you must first configure the program for this mode of operation.  This is done on the General tab of the Edit Dialog.

Once the connection has been configured, all you need to do is click the [LAUNCH] button on the main dialog, and the connection dialog shown here will be displayed.  The first time you Launch a connection, you will need to enter the proper username and password for the connection.

NOTICE:	The username is automatically saved into the INI file, however the password will NOT be saved in the INI file if the Save Password checkbox is not checked.  The password is encrypted before it is written into the INI file so that it will not be obvious to anyone with prying eyes, and it is not displayed normally on the dialog as it is typed (it is displayed as a series of asterisk characters), however no guarantees are made as to the security of the password.  If you want to be absolutely certain that no one gets your password, clear the Save Password checkbox so that it is not written to the INI file.

When the username and password are properly entered, click the [DIAL] button to start the login sequence.  The Dial-Up Networking connection will be accessed, and the number specified when the connection was configured will be dialed.  The username and password specified here will be transmitted, and if the login is properly established, the protocol authentication will be initiated.  During the login process, several status messages will be displayed in the Status: section of the dialog to indicate what is happening.  If an error occurrs, a dialog will be displayed indicating the error message, and the login will be terminated.  If all goes well, and the login is successful, the connection dialog will be deactivated and the timer will proceed under normal operation.


Common Problems
Common Problems and Solutions

CCM is not the easiest program to configure and get working properly because there are about 72 different user-configurable options.  The defaults used for most of the options should get you up-and-running, if not right Out Of The Box, without too much trouble.  If you do have problems getting things to work right, check the Example Configurations in this help file.  These two examples cover the configuration that is most common.

This section covers the most common problems that have been brought to my attention, and gives possible solutions to resolve the problem.

The message SVRAPI.DLL NOT FOUND is displayed when the timer starts

This program was designed for Windows 95 with Dial-up Networking FULLY INSTALLED, and there is a lot more to it than just selecting the Dial-up Networking option on the Add / Remove tab of Control Panel!  It involves installing a TCP/IP network stack, and several other functions.  While it is not difficult, it is beyond the scope of this documentation to provide information on installing Dial-up Networking since the items that need to be installed will vary from one Internet Provider to another.  If you have not installed Dial-up Networking, and wish to, contact your Internet Provider for assistance.  If they will not or can not provide help, many IP's have newsgroups or Help pages that will provide information on installing Dial-up Networking.

Luckily, if you do not want to completely install Dial-Up Networking to run this timer, you do not have to.

SVRAPI.DLL is one of the shared system files that is installed when Dial-Up Networking is installed.  Another file that will be required by this program is SECUR32.DLL.  The reason that they are required, and also the reason that the program fails when it starts, is that when a Windows program initially starts, it checks to see that all required files are available.  This program does not initially use these two files, but since they would be required if you used the Dial-Up Networking Launch feature, they must be in place for the timer to run.  If you do not want to load them, a 16-bit version of this program is available that has basically the same functionality, but does not include the Dial-Up Networking interface, and as such does not require SVRAPI.DLL or SECUR32.DLL.

OK, enough talk.  The two required files are on your Windows 95 distribution diskettes or CD, and can be "Extracted" without a lot of trouble.  Follow the section for whichever form of media that you have.

IF YOU HAVE WINDOWS 95 ON DISKETTE

If you have a 28-diskette set, use diskette 19.  If you have a 13-diskette set, use diskette 12.  Put the diskette in your floppy drive, and activate a DOS window.  Change to your Windows\System directory with the DOS command:

CD \WINDOWS\SYSTEM

If you have installed Windows 95 into a different directory, substitute that directory name in the above command.

Extract SVRAPI.DLL and SECUR32.DLL with the commands:

EXTRACT A:\WIN95_12.CAB SVRAPI.DLL

EXTRACT A:\WIN95_12.CAB SECUR32.DLL

or for a 28-diskette distribution set

EXTRACT A:\WIN95_19.CAB SVRAPI.DLL

EXTRACT A:\WIN95_19.CAB SECUR32.DLL

If your floppy drive is other than A:, substitute that drive letter in the commands above.

If you receive a message stating that the files were not located, you may have to do a bit of searching to locate the proper "Cabinet" file.

Get a "Directory" listing of the floppy command with the DOS "DIR" command.  Look for files with a .CAB file extension.  These are the "Cabinet" files, and you need to list the contents to find SVRAPI.DLL and/or SECUR32.DLL.  To list the cabinet file, enter the DOS command:

EXTRACT A:\cabfile /D

Again, if your floppy drive is other than A:, substitute that drive letter in place of A:.  For the word "cabfile" in the example, substitute the actual name of the cabinet file (i.e. EXTRACT A:\WIN95_12.CAB /D).  If you see SVRAPI.DLL and/or SECUR32.DLL listed, you can extract them with the commands shown above.

Once the two files have been located and extracted into the Windows\System directory, the timer should run properly.

IF YOU HAVE WINDOWS 95 ON CD

Place your Windows 95 CD into your CD-ROM drive, and activate a DOS command window.  Change to your Windows\System directory with the DOS command:

CD \WINDOWS\SYSTEM

If you have installed Windows 95 into a different directory, substitute that directory name in the above command.

Extract SVRAPI.DLL and SECUR32.DLL with the commands:

EXTRACT D:\WIN95\WIN95_11.CAB SVRAPI.DLL

EXTRACT D:\WIN95\WIN95_11.CAB SECUR32.

If your CD drive is other than D:, substitute that drive letter in the above examples.

Once the two files have been located and extracted into the Windows\System directory, the timer should run properly.

The Carrier Detect does not drop when the modem hangs up.

The Normal scenario is that the timer behaves properly before the first call, and until the modem hangs up.  At that time it doesnt stop timing. This is by far the most common problem I hear of.

Most modems have a command that controls the carrier detect line.  On USR and Hayes modems, the command is &C0 or &C1.  &C0 is CD override and &C1 is Normal CD operations (those are one an zero, not the letters O and I).  You need to check your modem documentation to see what the exact command is for your modem.  The one you want is NORMAL CD OPERATION.  CD override keeps the CD line high after the modem disconnects, and for some reason, is the default setting for many modems.

The best thing to do is to use the Windows Terminal program (or some other communications software that will allow you to Talk to your modem), but DO NOT place a call.  You must do this when you are not On-line to another computer.  You need to know three things:

o  The command to reset your modem (normally the Z command)

o  The command for Normal CD Operation

o  The command to save the current configuration (normally &W).

To verify that your software is communicating with the modem,  enter the command AT and press [ENTER].  You should see the modem respond with OK.

Now there are three steps to setting things up:

1)  Enter the command to reset your modem, and press [ENTER].  For most modems, this would be AT Z.  The modem should respond with OK again.

2)  Enter the command to set the modem to Normal CD Operation, and press [ENTER].

For USR modems you would enter AT &C1 and press [ENTER].  The modem should respond with OK again.

3)  Next you need to write the new configuration into your modems memory so it will become the normal power-on default.  Enter the command to save the configuration, and press [ENTER].  For modems with a single profile, this will probably be AT &W.  For modems with two profiles, you would probably use the 0 profile, and the command would be AT &W0.  As usual, the modem will respond with OK.

This has successfully solved the problem on many systems.  I honestly wish I could take credit for initially figuring it out, but I cant.  I was stumped and the user that originally reported the problem came up with the fix and was kind enough to let me know what he did.  For that, my everlasting gratitude!


INI File Structure
Initialization File Structure

This program has gone through many evolutions in the structure of the initialization file, and this version is no exception.  The format of this INI file is the same as the 16-bit version 2.8.4.

BASICS

The user options that are set in the EDIT and CONFIGURATION dialogs is stored in an initialization file in the same directory as the programs EXE file.  It is named CCM30.INI, and contains a minimum of 72 user-definable program options.  This file is a standard ASCII-format file that can be manually edited if required.  There are no options within the INI file that cannot be set from the Edit and Configuration dialogs, however this section is included as information for those who may be interested.

Parameters in each section are shown in the format Name=value where Name will be the name of the parameter, and Value will be a TYPE of data;  num indicates numeric data (i.e. 1,2,3, etc.), bool indicates a Boolean (True or False) variable.  In the INI file, True or Enabled will be a 1, and False or Disabled will be a 0.  A Data type of string indicates a character string, normally used as a title or file name.

The values in the INI file will probably NOT be in the order shown here.

[GENERAL] Section

This section contains information that controls the overall operation of the program.  Basically, all the information in this section is the options that are shown on the Configuration dialog.  There are currently 38 options in this section.

Version=num	The version of the INI file.  This value does NOT reflect the version of the program, but the version of the INI file (the INI file version for Program Version 3.0.1 is 3.0).

NumEntries=num	The number of Connections in the INI file (up to 32)

Last=num	The Entry Number of the last connection that was used

Port=num	The Serial port to be used (1, 2, 3 or 4 only)

Mode=bool	Automatic or Manual Start Mode (1=Manual, 0=Automatic)

Reset=bool	Automatic Session Timer Reset(1=Enabled, 0=Disabled)

Minimized=bool	Minimize Dialog When The Program Starts (1=Enabled, 0=Disabled)

CmdLineMin=bool	Causes the Minimize switch to be executed only if a command line parameter was passed to the program (1=Enabled, 0=Disabled)

MinOnStart=bool	Determines whether the program is minimized when the [START] button is clicked. (1=Enabled, 0=Disabled)

StartOnLaunch=bool	Determines whether the [START] button is automatically Clicked when the [LAUNCH] button is clicked.

CDExit=bool	Exit the program when the carrier drops(1=Enabled, 0=Disabled)

CmdLineExit=bool	Causes the CDExit to be executed only if  a command line parameter was passed to the program(1=Enabled, 0=Disabled)

ShowSummary=bool	Defines whether a summary dialog is displayed when the program exits.  This switch is only in effect when CDExit is true and the program is running in Automatic mode. 1=Enabled, 0=Disabled

IconMode=bool	Indicates which side of the display is shown on the icon or floating dialog when the program is minimized.  1=Left, 0=Right

DisplayMode=bool	Determines what data is displayed on the right side of the main dialog.  0=Prime Time, 1=Total Time

SessMode=bool	Determines what data is displayed on the left side of the main dialog.  0=Session Time, 1=Todays Time

StayOnTop=bool	Determines whether the main dialog and floating dialog stay on top of all other windows on the desktop. 1=Enabled, 0=Disabled

WinPos=num	This parameter is actually a set of four numbers separated by commas, as in 100,200,300,400.  Only the first two are significant since they indicate the position of the upper left corner of the main dialog on the screen.  The first number is the horizontal pixel and the second number is the vertical pixel.

IconPos=num	This parameter is actually a set of two numbers separated by commas, as in 100,200, that indicate the position of the upper left corner of the floating dialog on the screen.  The first number is the horizontal pixel and the second number is the vertical pixel.

FloatIcon=bool	Indicates whether to use a normal icon or the floating dialog when the program is minimized.  1=Floating Dialog, 0=Normal Icon

FDTitle=bool	Determines whether the title bar on the floating dialog is displayed. (1=Enabled, 0=Disabled)

EnabWarnSnd=bool	Enables or Disables the Warning Sound. 1=Enabled, 0=Disabled

WavFile=string	The file name of the sound file to be played when a Warning is in effect.

WarnInt=num	The time in minutes between playing of the Warning sound file.

EnabStrtSnd=bool	Enables or Disables the Start Button Sound.  1=Enabled, 0=Disabled

StartSound=string	The file name of the sound file to be played when the [START] button is clicked in Manual mode, or a carrier is detected in Automatic mode.

EnabStopSnd=bool	Enables or Disables the Stop Button Sound.  1=Enabled, 0=Disabled

StopSound=string	The file name of the sound file to be played when the [STOP] button is clicked in Manual mode, or a carrier drops in Automatic mode.

AllDaysSame=bool	Determines whether the All Days Are The Same button on the Prime Time page of the configuration dialog is set or not. (1=Checked, 0=Not Checked)

LogFile=bool	Determines whether the Log file is enabled or not. (1=Enabled, 0=Disabled)

LogMode=num	Log File style.  0=1 log file, 1=Prime and Non-prime logs, 2=individual logs for each connection.

LogOpt=num	Bitmapped value indicating what items are to be included in the log file.  If a bit is 1 the item is included.  If a bit is 0 the item is not included.

Bit 0 = System Date

Bit 1 = System Time

Bit 2 = Connection Name

Bit 3 = Session Time

Bit 4 = Total Time

Bit 5 = Prime Time

Bit 6 = Daily Total

LogRecFmt=num	Determines the format of the log file records.  1=3-line entries, 1=1-line Text-style entries, or 2=1-line Data-style entries

Grabber=bool	Determines whether the Clipboard Capture is enabled. 1 = Enabled, 0 = Not Enabled

GrabName=string	The name of the file into which the clipboard data is written

GrabCarrier=bool	Defines whether the Clipboard Capture is enabled only when the timer is running.  The title of this parameter is somewhat of a misnomer, but the idea started out differently. 1=Enabled, 0=Not Enabled

RedialEnable=bool	Defines whether Redialing is enabled or not.  1=Enabled, 0=Not Enabled

RedialSecs=num	Defines the number of seconds waited between dialing attempts

[CONNECTx] Section

There can be up to 32 of these sections in the INI file, one for each Connection.  The section for the first Connection in the list box will be [CONNECT1], the second will be [CONNECT2], and so on.  For each connection, there are27 options available.

Title=string	The name of the Connection as displayed in the list box.

TotalTime=num	The Total Accumulated Time in seconds

TodayTime=num	The Total Time Today in Seconds

TodayDOY=num	The day of the year that Today is.  This value is used to determine when to reset the Today timer.

LaunchEnable=bool	Defines whether a Launch program is enabled for this connection. 1=Enabled, 0=Not Enabled

LaunchProgram=string	The fully qualified name of the program to be Launched

LaunchNormPgm=num	This value denotes whether the program to be Launched is a normal EXE-type program or a Dial-Up Networking connection.  1=Normal Program, 0=DUN Connection.

BatchFile=string	This string denotes the name of the batch file to be executed when, and only when, the Launch mode is set for Dial-Up Networking.  For a Normal program, the batch file name is the name of the program to be launched.

ResetMode=num	The reset mode.  0=None, 1=Daily, 2=Weekly, 3=Monthly

ResetData=num	This value depends on the ResetMode in use.  It will be the time of day (in seconds) for mode 1, the day of the week (0=Sun, 6=Sat) for mode 2, or the day of the month (1-31) for mode 3.

ResetDay=num	The day of the year on which the next reset is due

WarnEnable=bool	Defines whether Warnings are enabled for this connection or not. 1=Enabled, 0=Not Enabled

WarnTtlData=num	The Total Accumulated time (in seconds) at which the warning is issued.

WarnSessData=num	The Session time (in seconds) at which the warning is issued.

WarnPrimeData=num	The Total Prime Time (in seconds) at which the warning is issued.

PrimeEnable=bool	Defines whether Prime Time is enabled for this connection or not.  1=Enabled, 0=Not Enabled

PrimeDays=num	A bitmapped value indicating which days of the week are considered Prime Time.  Bit 0=Sunday and Bit 6=Saturday.

PrimeData=num	The total accumulated Prime Time in seconds.

PrimexxxStart=num	There will be seven of these labeled PrimeSunStart through PrimeSatStart.  They denote the time of day on each day at which Prime Time begins.  The value is in seconds.

PrimexxxEnd=num	There will be seven of these labeled PrimeSunEnd through PrimeSatEnd.  They denote the time of day on each day at which Prime Time ends.  The value is in seconds.

TotalReset=num	The value (in seconds) that will be used when the Total Time is reset.

TodayReset=num	The value (in seconds) that will be used when the Today Time is reset.

PrimeReset=num	The value (in seconds) that will be used when the Prime Time is reset.

SessReset=num	The value (in seconds) that will be used when the Session Time is reset.

Username=string	This is the username that will be passed when the Launch mode is set to Dial-up Networking.

Password=string	This is the password that will be passed when the Launch mode is set to Dial-up Networking.  It is encrypted in the INI file.

AutoDial=bool	Defines whether AutoDialing is enabled for this connection or not.  1=Enabled, 0=Not Enabled

 [FONTS] Section

This section defines the Font that is used on the Floating Dialog.  Most of these values are not very informative to the normal user because they are determined by the Metrics of the system in use.  Normally they would not be edited manually since they are generated internally by Windows.

FDItalic=bool	Defines whether the font is displayed in Italics or not.  1=Italics, 0=No Italics

FDweight=num	This value defines the weight of the font characters.

FDheight=num	This value defines the height of the characters

FDwidth=num	This value defines the width of the characters

FDface=string	This string is the actual name of the font to be used

If you want to put Comments in the file (notes to yourself), begin the line with a semicolon as in:

; This line is a comment line

Any comment lines in the INI file are ignored.


How CCM Detects a Carrier

One of the main design criteria when I first started writing this software was to develop something that would automatically detect a carrier to a modem on a specified port, yet do so without interfering with the normal operation of the port.  Windows does not provide such a mechanism that I have been able to find.  It does provide the ability to access the serial port and retrieve information, however it does so by allocating the serial port so that no other software can access it. This was obviously not an acceptable solution.

The method I use for detecting a carrier is as old as the IBM-PC architecture itself.  Not the MS-DOS or PC-DOS operating systems, but the actual machine architecture.  While I will be one of the first to admit that I would not want to go back to the machines I used in the mid-eighties, the basic architecture of the machine remains the same.

The serial port has a series of registers associated with it that provide direct machine access to the port.  One of these registers is the Modem Status register.  This register uses the individual bits to indicate the status of various modem lines (the CTS, DSR, TERI, RI, RLSD, Delta CTS, Delta DSR, and Delta RLSD to be specific).  The RLSD (Receive Line Signal Detect) is the carrier indicator.  When a carrier is present to your modem from another modem, this bit is set high to indicate the presence of the carrier.  My program simply reads this register (using a standard C INP function call) and checks the RLSD bit.  No Interrupt handlers, no TSRs, nothing special at all.

Unfortunately, there appear to be some motherboards, serial ports, mouse drivers, or possibly video cards (yes thats right, some video cards use serial port addresses) that indicate problems when this method is used.  The symptoms are mouse Lockup or software that reports that the serial port is in use.  The problems are not widespread, and seem to be showing up on a small number of machines, but this isnt much comfort if you happen to have one of them.

At this point, I do not have an answer.  Windows, as far as I am able to determine, does not provide a mechanism by which the carrier can be checked without actually allocating the serial port.  If anyone has an idea for a method that would work better, I am wide open for suggestions!


KNOWN PROBLEMS

Ill be the first to admit that this program is not Bug-Free.  Any programmer who claims that a program is 100% Bug-Free is far more confident than I as to the capability of ANY program to run properly on every combination of hardware and software.

Following is a list of Known Problems with this program.  I hate the term Known Problem because it seems to indicate that I know a problem exists, yet am not doing anything to resolve it.  This is not true.  Every problem that is brought to my attention GETS attention.  Its just that some things are more difficult to find a solution to than others.  Since June, this project has gotten about 20 hours a week (and this is in addition toa full-time job, a family, and about an hour a day answering E-mail).  The problems will get solved, but some will take some time.

Main Dialog Ghost On a few systems, the Main Dialog does not disappear, nor is it accessible when the Floating Dialog or Taskbar Tray icon are used when the program is minimized.  I'm working on this problem, but at this time, I am not sure what is causing it.  As a temporary workaround, the problem does not seem to occur when the normal icon is used.

SVRAPI.DLL NOT FOUND This file is apparently required by any program that uses the RAS functions to access Dial-Up Connections whether the functions within the program that actually use the DLL are called or not.  What this means is that if you have not COMPLETELY installed Windows 95  Dial-Up Networking, you will receive an error when this program starts stating that it could not find SVRAPI.DLL.  Luckily there is a pretty simple "Fix" to this problem.  See the "Common Problems And Solutions" section of this HELP file for more information.

Working Directory - When some external programs are "Launched" using the [LAUNCH] button or a script file, the working directory is sometimes incorrect.  I'm working on this problem, and hope to have it fixed for the next release

General	There appear to be some combinations of motherboards, serial ports, mouse drivers, and software that disagree with this timer.  The symptoms are mouse "Lockups", or software that reports that the specified serial port is in use.  There is a section in this Help file entitled "How CCM Detects A Carrier" that explains the method I use for detecting a carrier.  The only resolution for the problem that I have been able to find so far is to not use the Auto Carrier Detect feature of the timer.  While I readily admit that this pretty much defeats the purpose of an "Automatic" timer, I do not have any other solution at this time.

Microcom EP Modems The Microcom parallel port modems do not use the standard IBM-PC architecture to map EP Modems the serial port registers, rather they use their own Windows driver.  This is the normal, approved method of handling hardware for Windows, and they have done an excellent job.   My timer will not detect the carrier to one of these modems properly though.  I was made aware of the problem, and am trying to find a way to resolve the problem without interfering with any other Windows communications software.

Older CTL3D32.DLL Versions Some older versions of CTL3D32.DLL have been known to cause problems with the video, especially when the timer switches to or from an Icon.  The version that I provide with the software is, to my knowledge, the latest available, and it has been the solution to several user's problems with video and 3D rendering.

Windows NT	The only known problem running the timer under Windows NT other than those mentioned above, is that it does not automatically detect the carrier properly.  There are some 32-bit API functions I hope to be able use to resolve this problem.


PROGRAM CONFIGURATION

Use this option to configure the programs GENERAL options.  To set options specific to a particular connection, use the EDIT function  When the command is selected, this dialog box will be displayed.  Note that it has 5 "Tabs" across the top of the dialog.  Each of these "Tabs" has a page of options that control the general operation of the program.  You can click on any of the tabs here to switch to that page of options.


Program Configuration
General Options

This program has the ability to automatically detect when a carrier is present at the serial port your modem is connected to.  When a carrier is present, the program can be configured to automatically start timing.  This section of the configuration dialog contains the controls that allow you to define the serial port that your modem is connected to, and either manual or automatic operation. In the top half are two buttons labeled Start Timer When Carrier Is Detected On COM1: through COM4: and Manual Start Only.  When Manual Start Only is selected (the default) the program will begin timing only when the Start button on the main dialog is pressed.  When Auto Detect Start is selected, the program will automatically detect when a carrier to your modem is present, and begin timing at that point.  The serial port labels (COM1: through COM4:) are initially dimmed.  These can only be selected when Auto Detect Start is selected.  In Manual Start mode, they are not used, and therefore have no meaning.  After selecting Auto Detect Start, you must select the serial port that your modem is connected to (COM1 through COM4) for the Auto Detect feature to work properly.

The lower half of this dialog controls the operation of the Clipboard Capture function.  Please read that section of the help file for information before you enable this feature!


Clipboard Grabber
Clipboard Capture Operation

The Clipboard Capture function will automatically and relentlessly grab text from the clipboard and write it to a file that you select.  There are a few IMPORTANT things to keep in mind before you use this function:

1)	There is only 1 clipboard available to ALL Windows programs.  Any program that uses the Cut or Copy commands normally uses the Clipboard.  When the Clipboard Capture function is in use, the normal operation of the Clipboard is interrupted since any text information sent to the clipboard is captured by the timer.

2)	It is relentless!  Any text that shows up on the clipboard while the capture function is running (and if it is enabled, it is possible for it to be running any time the timer is displayed on the screen) it WILL take any text that shows up on the clipboard and write it to the specified file.  Whether you wanted it to or not.  If you are running an editor or word processor or mail reader at the same time the capture function is running, when you Cut or Copy something in your editor or word processor, the Timer will get it before you can do anything with it.

3)	The Clipboard Capture function clears the clipboard when it has captured the data.  If you put text on the clipboard while the Clipboard Capture is running, dont expect to be able to do anything else with it!  The capture function will get it and write it to the text file, then clear it from the clipboard.

4)	Any data that is on the clipboard when the timer starts with the clipboard capture function enabled will be written to the specified file.

5)	Only TEXT data is captured.  Graphic data is not read.   If you paste graphic data to the clipboard, it will be ignored.

These precautions are especially important to keep in mind if you run the timer while you are not On-line.  If the timer is active and the capture function is enabled it will get text from the clipboard and clear the clipboard.  Remember that!

If you can live with these restrictions, read on!  If you think the Clipboard Capture will cause more problems than it is worth (and it frequently does!), do NOT enable this feature!

The Clipboard Capture is a very handy little function that you can use to capture text from any source and write it to a file.  If it is text and you can get it to the clipboard, the capture function can write it to its file.  You can use it to grab parts of a Netscape HTML file, or copy the URL line in Netscape to a file, or just about any form of text from a Windows application.

There are only three controls associated with the Clipboard Capture, and they are all on the bottom half of the General page of the Config Dialog.  The checkbox labeled Enable Clipboard Capture controls whether the capture function is enabled or not.  When the box is checked, the capture function is enabled.  When it is not checked, the capture function is not enabled.

To the right of this checkbox is a box labeled Only When The Timer Is Running.  It is highly recommended that this box be checked because it causes the capture function to capture data only when the timer is actually running (meaning when the time on the display is actually changing).  That way, if you are not Online, the timer will not interfere with normal clipboard use.

The [BROWSE] button and edit field allow you to specify the file to which captured data is written.  By default, the name is CCM30.TXT, and is located in the directory that you have the timer installed.  You can change this file name to whatever you want to by directly entering the name or clicking the [BROWSE] button to select a file.

Most Windows applications have Cut, Copy and Paste functions.  They are commonly under the Edit menu selection.  Simply Select the desired text (put the mouse cursor at the beginning of the section you want to copy, hold the left button down and move the mouse to the end of the section you want), then use the Copy or Cut function to transfer the text data to the Clipboard.  When the timer sees it show up and the capture function is enabled, it will automatically write it to the specified file, and clear the clipboard for the next batch of data.

Enjoy it, play with it, have a ball, but remember the cautions above!  If you are running your word processor, editor, spreadsheet, ANYTHING and cut a chunk of data to the clipboard while the capture function is running, dont be surprised when it isnt on the clipboard anymore!


Program Configuration
Start / Exit Options

This page of the dialog has controls that affect how the program is started, and how it exits. START MINIMIZED defines whether the program starts as a full dialog box (the default) or as an Icon (in Minimized form).  There is an additional Check Box beside this one labeled ONLY BY COMMAND LINE.  This button is very handy if you start the program from a Script file, and you would like it minimized, but still want the program in its full-size mode when you start it normally.  If this button is checked AND START MINIMIZED is checked, when the program receives a parameter passed on the command line, it will start minimized.  If the START MINIMIZED button is checked, and this button is NOT checked, the program will ALWAYS start in a minimized format.

EXIT ON CARRIER DROP controls whether or not the program will end itself when it senses that the carrier from the modem has been lost.  If this box is checked, the program will close itself as soon as the carrier to the modem drops.  As with the Start Minimized command, there is a  check box to modify this command so that it is only active when a parameter is passed on the command line.  It is also very handy when you launch the program from a Script file such as used with Trumpet Winsock.  Use the script file to dial your Internet Provider, and when you execute the Bye command and the carrier drops, the program will automatically exit.  This prevents having multiple timers running if you dial several times.

DISPLAY SUMMARY will also only be enabled if EXIT ON CARRIER DROP is enabled.  If this check box is enabled, a message box displaying the session time and total time for the selected connection will be displayed when the program exits.

MINIMIZE WHEN START IS CLICKED is an option that controls whether the window is automatically Minimized when the [START] (or [AUTO]) button is clicked.  If this button is checked,  the program will automatically Minimize itself when you click the [START] button.  If it is unchecked, the program will not minimize automatically.

CLICK START WHEN LAUNCH IS CLICKED is an option that can be set so that any time you click the [LAUNCH] button, the [START] button will also be Clicked.  This prevents you from having to click two buttons when you Launch a program.  If you do not want this feature enabled, clear the checkbox.


Program Configuration
Display Configuration

This Page contains options that control how the program appears and acts on the screen. ICONIC DISPLAY: NORMAL ICON,  FLOATING DIALOG, OR TASKBAR TRAY ICON. - This set of buttons controls whether the display used when the program is Minimized is a normal icon-type display, floating dialog box, or located in the taskbars Tray area at the right side of the taskbar.  There are advantages to each, depending on what you are running.  Windows 95 arranges all icons on the Task Bar, and the normal iconic display may be preferable in this case. The Floating Dialog may be preferable since it remembers its position between sessions, and may be placed anywhere on the screen that you desire.  The dialog simply displays either the Session Time, Prime Time or Total Time in a small dialog (as shown here) [image] that can be moved around on the desktop.  The position of the dialog is retained, so wherever you put it is where it will be displayed from session to session.

Anytime the Floating Dialog is displayed, you can click the LEFT mouse button anywhere on the gray part (not the title bar) to return to the main dialog display.

You can also turn the title bar on or off by clicking on the floating dialog with the RIGHT mouse button.  If the title is on, it will be turned off.  If it is off, it will be turned on.  You MUST have the title bar on to be able to move the dialog since you have to Drag it by the title bar!

The Taskbar Tray icon option causes the icon to be located in the Tray area at the right side of the taskbar.  When the icon is located here, there is no running display of time, however you can hold the mouse cursor over the icon for about 1 second and the current value will be displayed as a Tool Tip.  Additionally, when the program is minimized in this manner, you can right-click on the icon to get a dialog displayed showing a summary of the connect time, or left-click on the icon to restore the main dialog.

The [FONT] button to the right of the Floating Dialog checkbox allows you to set the font used on the Floating Dialog.  This button is disabled if Normal Icon  or Taskbar Tray Icon are selected.  When the [FONT] button is clicked, a standard Windows common dialog is displayed that will allow you to select the font and font attributes that you want used on the Floating Dialog.

STAY ON TOP - This option is like the option in Windows Help that allows you to keep the help file on top of all other windows.  When this option is turned on, the dialog box (or icon) will always stay on top of other windows on your desktop.

SAVE WINDOW POSITION - When this option is on, the current position of the window (assuming it isnt an Icon) will be remembered each time the program ends.  Put the window where you want it, turn this option on, and it will be displayed in the same position the next time you run it.

AUTO RESET ENABLED controls whether or not the Session counter is reset to zero each time the timer is started.  When this option is selected, the program will reset the session timer to zero each time a session is started.  If it is not selected, the session timer will simply start counting from where it left off each time a session is started.  If you have selected the option on the Start / Exit Options page that causes the timer to exit when the carrier drops, this option really has no meaning since the program will automatically exit instead of resetting when the session ends.


Program Configuration
Log File Options

This page of options enables / disables and controls the format of your Log file.  When the log file is enabled, it creates a text file on your disk drive that contains a log  of all of your connect sessions.  It also has entries denoting when your timers were reset.  The Enable Log File Recording checkbox determines whether logging is enabled.  If this box is checked, a log file will be created.  If it is unchecked, a log file will NOT be created.  There are also three record format options and three file type options that control what the records look like and where they are recorded.

Log File Has 3-Line Records is the default record format.  This is the most Human Readable format.  The first line is a series of dashes used as a divider between records.  The second line denotes either a Session Log (where you were connected to another modem) or a Timer Reset to denote that your timers were reset.  It includes the system date and time at which the event occurred, and the name of the Connection.  The third line contains the total Session time, the Total Elapsed time for the particular Connection, the total Prime Time for the Connection (or N/A if Prime Time monitoring is not enabled), and the Daily Total for the Connection.  An example is shown below.

------------------------------------------------------------------

Session Log 08/06/95 08:16:58 Netcom SLIP

Sess: 00:00:03   Total: 02:05:54   Prime: 01:50:59   Day: 00:01:45

Log File Has 1-Line Text-Style Records is a record format for those of you who want to be able to load the Log file into a spreadsheet or database.  The data is written on one single line in the log file, and the fields have a fixed width to facilitate importing into a database or spreadsheet.  An example is shown below:

SESSION 08/06/95 08:14:24 000:00:02 002:05:36 001:50:59 00:01:27 Netcom SLIP

The format of the record is as follows:

Columns	Description                                                 _

000-007	Spaces

008-025	Mode (The word "RESET   " or "SESSION ")

026-026	Space

027-034	System Date

035-035	Space

036-043	System Time

044-044	Space

045-053	Session Time

054-054	Space

055-063	Total Time

064-064	Space

065-073	Prime Time

074-074	Space

075-083	Daily Total

084-084	Space

085-117	Title

The Session Time, Total Time, and Prime Time fields are 9 characters long.  They can accommodate time values up to 999:59:59.  The System Time and Daily Time fields are 8 characters long.  They can accommodate time values up to 24:00:00.

Log File Has 1-line Data-Style Records is similar to the Text Style records, but it records a shorter record with all spaces and time / date dividers stripped out.  In the Text Style record, the date and time have the format: MM/DD/YY HH:MM:SS.  In the Data Style record they have the format MMDDYY HHMMSS.  Notice that the / and : characters are omitted.  An example is shown below:

0080695081511000000200205520015059000143Netcom SLIP

The format of the Data Style record follows:

Columns	Description                                                 _

000-000	Mode (0=Session or 1=Reset)

001-006	System Date

007-012	System Time

013-019	Session Time

020-026	Total Time

027-033	Prime Time

034-039	Daily Total

040-072	Title

The Session Time, Total Time, and Prime Time fields are 7 characters long.  They can accommodate time values up to 999:59:59 in the format 9995959.  The System Time and Daily Time fields are 6 characters long.  They can accommodate time values up to 24:00:00 in the format 240000.

NOTE:  The above listings assume that all fields are included in the log file.  If one or more of the fields are omitted, the format of the record will change.

The three File Type Options allow you to define what file(s) the information will be logged to.  Regardless of the option selected, the log files are all generated in the same directory as the program files. The default file type is One Log File Records All Information.  When this option is used all information will be logged to a single log file with the name CCM30.LOG.  You also have the option of  2 Log Files - Prime and Non-Prime Time.  This option will create 2 log files, one named CCMPRIME.LOG and the other named CCMNOPRI.LOG.  CCMPRIME contains all log information that occurred during Prime Time (as defined for the particular Connection).  CCMNOPRI contains all events logged during Non-Prime Time.

Three things to keep in mind:

1)  ALL Connections will be logged to the same files.  In other words, Prime time for Connection #1, #2, ... #32 will all be logged in CCMPRIME.LOG and all Non-Prime events in CCMNOPRI.LOG.

2) Connections that do not have Prime Time hours defined will be logged to CCMNOPRI.LOG

3)  If a session crosses the time boundary between Prime Time and Non-Prime Time, the entire session will be logged in CCMNOPRI.LOG.  Likewise, if a session crosses the time boundary between Non-Prime Time and Prime Time, the entire session will be logged in CCMPRI.LOG

The third Log File Type option is Multiple Log Files - One For Each Connection.  This option records all information for a particular Connection in its own log file.  For example, ALL events for Connection #1 will be logged into CCM_01.LOG.  ALL events for Connection #2 will be logged into CCM_02.LOG, and so forth.

Regardless of the Log File format chosen, the Log RECORD format chosen above determines the format of the records in the file.

The button labeled [EDIT LOG] allows you to quickly edit the log file that is currently active.  Click this button and the Windows Notepad editor will be started with the current log file loaded.  The file will be dependent on the Log File Type discussed above, and also whether it is currently Prime Time or None Prime Time.

The group of seven checkboxes at the bottom of the dialog determine what information is included in the log file.  Items that are checked will be included, and items that are not checked will be omitted.  You are free to choose any or all of the seven data items to be included.


Program Configuration
Sound Options

This configuration Page allows you to select and enable the sounds that will be played during program operation.  There are three sounds that can be played, and all three can be enabled or disabled as desired.  One will sound during Warning events, another when the [START] button is clicked (or the program starts timing automatically), and the third when the [STOP] button is clicked (or the program stops timing automatically).  Each of the three sections has a check box that enables or disables the sound.  If this box is NOT checked, the sound will not play; if it is checked (and the sound file actually exists on your system) the sound will be played at the appropriate time.

Each of the three fields has an Edit Field where you can enter the name of the sound file.  You can also click the [BROWSE] button to locate a sound file on disk using the standard Windows File Open dialog.  Once you have selected a sound file, you can also click the [TEST] button to play the sound.  This will insure that it will play properly, and let you know what it will sound like when it plays.

The Warning Sound also has an edit field labeled Mins:.  This field denotes how often the warning sound is played after the Warning threshold has been crossed.  The default is 1 minute, but you can set it to any desired WHOLE MINUTE value.  Do not enter minutes and seconds or fractional minutes.

The times at which a Warning occurs are set in the EDIT dialog for each Connection.

A Warning About Warnings!  Keep in mind that you can have all three Warnings enabled.  The program will start warning you when the value for ANY of the warnings you have enabled is reached.  When the warning is issued, the color of the text on the main dialog stays changed, but the next sound that is issued will be X (x is the delay value set in the configuration dialogs Sound section) minutes from the first time the sound is played.  If, for example, your Prime Time setting is reached, the sound will play.  Assume that you have a 15-minute delay set for the next sound, and your Total Time limit is reached 5 minutes after the Prime Time limit.  You will NOT get another sound played when the Total Time limit is reached in this case, because it is inside the value set by the delay.


REVISION HISTORY

This program is an extension of the 16-bit version for Windows 3.1.  It contains nearly all of the features of version 2.8.4a of the 16-bit version, as well as the ability to access Dial-up Networking connections, and the option of being minimized into the taskbar Tray area.

For the time being, the two versions will be developed in parallel.  When features are added to one, they will be added to both versions.  As time goes by, and Windows 95 becomes the predominant Windows version, the 16-bit version may be dropped.

Since this is the initial release of the 32-bit version, the Revision History is very short, however for future versions, this section will list things that have been added or changed.

Version 3.0.1 11/05/95	Initial release of Version 3.0.1.  Virtual duplication of the 16-bit Version 2.8.4.

Version 3.0.2	11/12/95	Fixed a problem that prevented the sound file names from being read from the INI file properly.

Fixed the problem that prevented the carrier from being properly detected on some systems.

Fixed a problem that prevented the "All Days Are The Same" setting from being read from the INI file properly.

Fixed the problem (again!) that prevents the main dialog from not being the top-most window when the Stay On Top switch is turned off.

Fixed the problem that caused some of the text and bitmaps to have the wrong background colors when Win95 is using anything but the standard colors for 3-D objects.

Fixed a problem (hopefully!) that prevented some programs from being "Launched" properly either by using the [LAUNCH] button or a Batch file.

Added an option on the Dialing Dialog to automatically start dialing when it is activated from the [LAUNCH]  button or by the Launch command being passed to the program.

Added a Redial option to help with Busy Signals.


CREDITS

I receive a lot of E-mail concerning this program and its 16-bit counterpart, and a good deal of it has a lot of praise for the structure and features of the software.  While I certainly appreciate the praise, I cant take credit for all of it.  All I did was write the code.  Most of the features and enhancements were ideas provided by the users.

I wont pretend to say that every idea that has been sent to me has been implemented, but a good many have.  If I were to implement every idea that was presented, this would quickly become a full-time job instead of a hobby.  I already have one full-time job working with computers, and I dont need two!  The list of things that I want to add is very long, and some people tend to get impatient when their ideas arent implemented.  Have patience ... Im working on it!!

I also have to credit an excellent group of Beta testers.  Ive been very fortunate in that I have been able to find Beta testers for most of the releases very easily.  These people put up with a lot of buggy problems, GPFs, crashes, and lots of other junk just so you dont have to.  To all those for this and previous releases, I offer my thanks.  It is truly appreciated.

The Beta testers for Version 2.8.4 were:

o	Don Moe

o	David Douglas

o	Thomas  Kuenzli

o	Derek Pinton

o	Yigal Ayalon

o	Jack Van Duffelen

and since this is a vitrtual duplication of that version, they deserve a lot of credit!


General Program Operation
PROGRAM OPERATION

This program has grown from something real simple into something a little bit complicated.  It isnt hard to understand how it works AFTER you understand how it works!  There are quite a few options that make it very customizable to the way you want to use it.  This section will describe how to set up the program, and how to configure it so that you can get the most out of it.

This is the main programs display.  You can "Click" on any of the controls to get help on that particular control.  There are basically two areas of configuration and operation.  There are some Program configuration variables and controls that define how the overall program behaves, and there are a set of Connection variables that define how each Connection behaves.  Before you proceed with this section, read the section on Connection Configuration to be sure that you understand how the Connections work in this program.  They are the heart of this program, and are very important in providing the flexibility to set up the software the way you want it.

This program can actually be run in two different ways.  How it behaves when it runs depends on how you have it set up.  The Program Configuration defines how the overall program acts.  Read through this section now to get an understanding of the options.

You will normally start this program by clicking on a Program Manager icon (as in any normal Windows program), or start it from another program.  Many communications programs provide a Scripting facility to execute commands.  Trumpet Winsock is probably the most common since it is used for the majority of the Internet connections.  If you run Trumpet, you would normally want to start this program from within the script you use to dial your Internet provider.  Alternatively, you can use THIS program to start another one.  If you have a communications program that doesnt have scripting capabilities, or some other means to start another program, you can set up this program to Launch your communications software or a Dial-Up Networking Connection.  If you have a program assigned to a connect, the LAUNCH button will be enabled.  Just click this button to start the program.  If a program is not assigned to this Connect, the button will be disabled.

The easiest way to use the program is to configure it for Automatic CD Detection.  This mode watches the Modem Status register, and when it sees the CD, or Carrier Detect, go high it knows that you are connected to another modem, and it begins counting.  When the CD line drops as your modem hangs up, it stops counting.

When Auto Detect is enabled, the Start button on the main dialog will read Auto.  When you click the [Auto] button, the program will begin to monitor your modem registers, and the button will change to read [Stop].  You MUST click the [Auto] button before the program will monitor the registers.  If it reads [Auto], it is NOT monitoring the register.  This was done intentionally since there will be times that you want to stop timing during a connection, or just not time a connection period at all.  Having this button there gives you both capabilities.  To monitor the modem, just click it.  To stop monitoring, just click it again.

Now, since you have the capability of having up to 32 connections assigned, what if you want to use a specific one through a Script file?  When you click the down arrow on the drop-down list box that lists the connections, you will see all of those that you have defined.  The first one in the list is number one, the second is number 2, the third is number 3, and so forth.  In your script file, you can add the index number of the list box to the command that starts the program to start the program using a specific connection.

In a Trumpet Winsock script you might have the line EXEC C:\WINAPPS\UTILS\CCM30.EXE to start this program running from the script.  If you want to start the program running with the third entry in your connection list box enabled, all you have to do is add 3 to the end of the script line, as in EXEC C:\WINAPPS\UTILS\CCM30.EXE 3.  This is called passing a Command Line Parameter to the program.  CCM30 watches for command line parameters when it is started.  There are several Program Configuration options that are activated only if a command line parameter is passed.  This one just described is used to identify a Connection to use.  You can also configure the program to start Minimized only when a command line parameter is passed, exit when the CD drops only when a command line parameter is passed, and display a summary dialog when a command line parameter is passed.

The Pushbuttons on the right side of the dialog are: HELP to access this help file, ABOUT to display the About dialog, CONFIGURE to access the Program Configuration Options,  START / AUTO or STOP (depending on the configuration) to start the timer,  and EXIT to end the program.   There are also EDIT and LAUNCH buttons beneath the List Box.

The Start button is used to start the timing function.  When Auto Detect Start is enabled in the configuration options, this button will be labeled Auto instead of start.  Remember that if this button reads [Auto], you still have to click it to begin monitoring the modem register.

Any time the program is in its timing function,  many of the main dialog controls will be disabled.  You cannot change the configuration or edit a Connection while the program is running.  When you click the [Stop] button, all functions will be enabled again.  You do NOT have to hang up your modem and call back if you were running in Auto mode.  Just click [Stop], make whatever changes you want to make, and click [Start] (or [Auto]) again to restart the timing.

The two display sections show the Session time or Total Time Today and Prime Time or Total time.  Each section has two display modes that can be switched by clicking anywhere inside the Frame.  The left side will either display the elapsed Session Time or your Total Daily Connect time.  The right side will display either the total Prime Time or the total Elapsed Time (since the last Reset) for the Connection in use.  If you do not have Prime Time Monitoring enabled in the Connection Configuration, you cannot switch the right side of the display, and the total display will always show the total accumulated time.

The two Reset buttons in each of the display sections can be used to reset the session and accumulated time.  If you click the reset button for the accumulated time, you will be prompted to verify that you really want to do this since it will clear the time in the initialization file also.  You can reset either of the time displays at any time, even when the timer is running.  If you decide in the middle of a connection that you want to reset the time, go right ahead and do it.

If you Minimize the program, it will be displayed as an Icon on your desktop.  The session or Total Time will still be displayed as the title of the icon.  This allows you to get the program out of your way, but still keep an eye on how long you have been connected.

You can control what is displayed on the icon from the main dialog.  If you have Prime Time monitoring enabled, you have four choices of icon information; Session Time, Time Today,  Prime Time, or Total Time.  If you do not have prime time monitoring enabled, you only have three; Session Time, Time Today, or Total Time.  Whatever is displayed in the Total Time / Prime Time section of the main dialog can be displayed on the icon by clicking the left mouse button anywhere inside the border of the section.  You can change the icon to display Session Time or Time Today by left-clicking anywhere inside the Session section of the main dialog.  The Side that is selected to be displayed on the icon is denoted by its blue color, and having its title in brackets (as in [Session] or [Total Time]).

There are a couple of ways to start and end the program.   It can be configured to start as an icon or a full-size display, or configured to start as an icon only if it is passed a command line parameter.  It can also be configured to exit when the carrier drops, or exit when the carrier drops but only if it was passed a command line parameter.  You can also set the program to display a summary dialog when the program exits.  For more information on these options, see the Configuration section.


CONNECTION CONFIGURATION

A Connection, as used in this program, is defined as a certain BBS, Internet provider, or other connection that you routinely make with your computer.  This program allows you to define up to 32 Connections, and there are quite a few ways to define each one.

The Edit Dialog box is as shown here.  Notice that it is a Tabbed dialog box.  There are 5 Tab Controls along the top of the dialog that select sections of the Connection to set up.  You can click on one of the tabs in the dialog shown above to go directly to the help for that dialog. There are also several controls that will be common to all five of the dialogs.  They are the 4 buttons along the bottom of the dialog labeled [DELETE], [OK], [CANCEL], and [HELP]. The [DELETE] button is used to delete the specified entry from the Connect list.  When you click this button, you will be asked to confirm that you want to delete the selected Connection.  If you click Yes, the connection will be removed from the list.

NOTE:  If you Delete a record from the list, keep in mind that any Script files you are using that are indexed into the list will have to be updated.  Deleting a record will cause all entries past it to move up 1 slot in the list box, so you will have to edit your script files and change the indexes.

The [OK] Button saves any changes you have made in the Connection setup, and makes them active.  The [CANCEL] button exits the dialog without saving any of the changes that you have made.  The [HELP] button can be used to access the Help file page that deals with the currently active dialog Tab page.


Connection Configuration
Launch Configuration

There are basically two ways to run this program.  You can have this program started by another program, such as through a Script file.  Or you can use this program to start another program.  Since many communications programs dont provide a means to launch a connect monitor, you can configure this program so that you can start it and Launch your communications program from it.  Well get back to this in a minute, but for now just remember that Launching a program means starting it from within this program.

The Launch Program section has several controls, and the display that will actually be shown depends on the setting of the controls.

By default, the program is configured to launch a Normal program, or in other words, and EXE file.  It can also be configured to Launch a Dial-up Networking Connection, and this difference is what determines what controls are shown.

The check box labeled Enable Program Launch controls whether the program will be able to Launch another program or dial-up connection.  When this button is unchecked, none of the other controls will be enabled, and the [LAUNCH] button on the main dialog will be disabled.  When it is checked, you can configure the Launch program to your needs.

Once the Enable check box is checked, select either Normal Program or Dial-Up Networking Connection depending on which way you want the program to behave.  For a Normal Program you can enter a program to Launch in the edit field, or click the [Browse] button to select a file using the normal Windows file open dialog.   If the program file is in a directory pointed to by your Path statement, all you need to do is enter the name of the program, such as NETCRUZ.EXE.  If the directory is NOT in your Path, you will need to enter the full program and directory, such as C:\WINAPPS\NETCOM\NETCRUZ.EXE.  When the Enable Program Launch box is checked, and the program name is entered, you will be able to start it from the main dialog by pressing the Launch button.

This version has the capability to handle Mini Batch Files for Launching more than one program at a time.  This is not a very sophisticated implementation of Batch processing, but it does allow you to start more than one program automatically.

CCMs Batch implementation works as follows:

1)	The filename extension must be .CBA to denote a CCM Batch file.  Any other type of file will be processed normally.

2)	The Batch file may be generated with any standard text editor such as Windows Notepad.  Each line of the file contains the fully qualified path of a program to be executed, and the programs in the file are started in the order that they are read.

3)	Each program line in the Batch file can have the qualifier MINIMIZE or HIDE following it, separated from the program name by a comma, to start the program Minimized or Hidden.  Some software will ignore these values when they are started however.

Here is an example of a file that will start Eudoras Mail Reader, Fortes FreeAgent Newsreader, and Netscapes Web Browser.  FreeAgent and Eudora will start Minimized since they have the MINIMIZE qualifier at the end.

c:\winapps\internet\agent\agent.exe,MINIMIZE

c:\winapps\internet\eudora\eudora.exe netcom.ini,MINIMIZE

c:\winapps\internet\ns32\program\netscape.exe

Notice that all three lines have the full path to the program shown.  Most Windows software uses some sort of configuration file (INI or CFG) to store its configuration information, and most Well Trained software stores this file in its own directory and NOT the Windows directory.  When CCM starts a Batch line, it will temporarily set the working directory to the directory of the program so that the correct configuration information can be located.

Again, I emphasize that this implementation is not very sophisticated.  It is not a scripting language that allows you to do lots of things with the commands, simply a method to start more than one program at once.

If Automatic CD Operation is enabled in the Configuration options, and you click the [LAUNCH] button to start a program, the [AUTO] button will also be Clicked.  This keeps you from having to remember to click the [AUTO] button also. This option is valid for both a Normal Program or a Dial-Up Networking Connection.

Likewise, if Minimize on Start is enabled in the Configuration options, and you click the [LAUNCH] button to start a program, the program will automatically minimize. This option is valid for both a Normal Program or a Dial-Up Networking Connection.

If you select Dial-Up Networking Connection, the display will change somewhat.  Notice that a Batch File Name field and Browse button have been added.  Since the Program Name field is being used by the actual name of the dial-up connection, these two fields are displayed to allow you to specify a batch file to be executed when uising a dial-up connection.  These fields will be displayed ONLY when the Dial-Up Networking Connection checkbox is selected since, when a Normal Program is used, the batch file is specified in the program name field.  To see how a Dial-Up Networking connection is actually used, refer to the section entitled Dial-Up Networking Operation in this help file.


Connection Configuration
Warning Configuration

This program has three different Warning settings that can be defined to provide you with a warning when your time limits are at hand.  It was mainly designed for use by people who have a limited amount of connection time.  For example, if you are limited to 2 hours per day, you can set this section up to warn you when you are getting close to your limit.  When a Warning is issued, the Sound File specified in the Configuration Options is played, and the text on the main display changes color to red to denote a warning.  A limit can be set for a specified Prime Time, Total Time, and Session Time limit.  When the time entered in the field is reached, the warning is issued.  If the value in a field is set to 00:00:00, no warning is in effect for that time value.  If other words, if you set a limit for Prime Time, and leave Total Time and Session Time at 00:00:00, the only warning that will be enabled is for Prime Time.

There is also a Warning Enable check box that enables or disables ALL warnings.  If this box is unchecked, all warnings are disabled.  If it is checked, the warning times that are not set to zero are in effect.

Using the 2-hour example from above, you might want to set your Total Time warning to 1:55:00 for 1 hour, 55 minutes, 0 seconds.  This would give you 5 minutes to finish what you are doing and log off before your time is up.

A Warning About Warnings!  Keep in mind that you can have all three Warnings enabled.  The program will start warning you when the value for ANY of the warnings you have enabled is reached.  When the warning is issued, the color of the text on the main dialog stays changed, but the next sound that is issued will be X (x is the delay value set in the configuration dialogs Sound section) minutes from the first time the sound is played.  If, for example, your Prime Time setting is reached, the sound will play.  Assume that you have a 15-minute delay set for the next sound, and your Total Time limit is reached 5 minutes after the Prime Time limit.  You will NOT get another sound played when the Total Time limit is reached in this case, because it is inside the value set by the delay.


Connection Configuration
Prime Time Configuration

 This section is entitled PRIME TIME MONITORING.  If you use an Internet provider or other source that has a Prime Time / Non-Prime Time charge or limit, you can use this section to set up the Prime Time part of the day.  The section has quite a few controls.  There is a check box labeled Enable Prime Time Monitoring, 14 edit fields, and a checkbox labeled All Fields Have The Same Value.  As with the previous sections, the Enable check box MUST be checked to enable Prime Time monitoring.  If the enable check box is NOT checked, Prime Time will NOT be monitored regardless of the values entered in the time fields.  The seven boxes are for the days of the week.  Check the boxes that your provider deems as Prime Days.  If all week is limited, check all seven.  If only some of the days are limited, check the ones that apply to your particular connection.

Each of the days has a field to specify the time at which Prime Time begins and ends. If, for example, your provider defines Prime Time as being from 9:00am to 12:00 midnight, you would enter 9:00:00 for the Begin Time and 24:00:00 for the End Time.  These values are entered in 24-hour format.  1:00pm is 13:00; 4:00pm is 16:00; 7:00am is 07:00; and so forth.

To enter the same value in all the fields, check the box labeled All Fields Have The Same Value.  Then anything you enter in one of the fields will be copied to all 6 of the other corresponding fields.  This may also set the values for some of the days that you dont have checked, but that wont matter since those days will not be monitored anyway.

The main program display allows you to select Prime Time or Total Time display in the right section of the display by clicking anywhere inside the display frame.  In addition, an LED indicates whether it is currently Prime Time or not.  If it is green, it is currently Prime Time.  If it is red, it is not Prime Time.


Connection Configuration
Reset Configuration

This section controls the AUTOMATIC RESET OF THE PRIME TIME AND TOTAL TIME.  There are four "Radio Buttons" labeled "None", "Daily", "Weekly", and "Monthly".  By default, NONE is selected to disable automatic resetting of the times.  If you select DAILY, your timers will be reset on a daily basis.  If you select WEEKLY, the timers will be reset on a weekly basis, and if you select MONTHLY, they will be reset once each month.

Beneath the radio buttons is an edit field whose label will change depending on which Reset Mode is selected. If DAILY mode is selected, you should enter the time of day at which you want the timers to reset.  The value is specified in minutes in the format HH:MM in 24-hour format.  For midnight, enter 00:00.  For 3:00am enter 03:00.  For 6:00pn enter 18:00, and so forth.  If you select WEEKLY mode, enter the day of the week on which you want the timers to reset in the edit field.  The can be abbreviated to three characters such as "Sun", "Mon", "Tue", etc.  If you select MONTHLY reset mode, enter the day of the month on which you want the timers reset.  Enter the value in a numeric format such as 1 or 2 or 28.


Connection Configuration
Elapsed Time Totals

This section of the dialog contains the ELAPSED TIME TOTALS.  If you want to manually set the total to some value, you can do so here.  If you do not have Prime Time Monitoring enabled, that block will be disabled so you cannot change it.


SETUP EXAMPLES  Config Dialog  Connection Dialog

Since this program has quite a few configuration options that will probably seem confusing at first, this section has been included to illustrate some configuration examples.  Keep in mind that there are two types of configuration:  The GENERAL configuration options that affect overall program operation, and CONNECTION configuration that specifies operating parameters specific one particular connection.

GENERAL CONFIGURATION

As a general rule, the easiest way to use the program sets the CONFIGURATION options as follows:

PORT Tab:

START MODE - Start Timer When Carrier Is Detected (AutoDetect mode)

SERIAL PORT - Depends on your system.  Select the port your modem is connected to.

START Tab:

START PROGRAM MINIMIZED AS AN ICON - Checked

START MINIMIZED ONLY BY COMMAND LINE - Checked

EXIT PROGRAM WHEN MODEM CARRIER DROPS - Checked

EXIT PROGRAM WHEN MODEM CARRIER DROPS ONLY ON COMMAND LINE - Checked

DISPLAY SUMMARY - Checked

MINIMIZE PROGRAM ON START - Checked (Personal Preference)

CLICK [START] WHEN [LAUNCH] IS CLICKED - Checked (Personal Preference)

DISPLAY Tab:

ICONIC DISPLAY - Normal Icon checked (Personal Preference)

STAY ON TOP - Checked (Personal Preference)

SAVE POSITION - Checked (Personal Preference)

DISPLAY UPDATE INTERVAL - 980

AUTOMATICALLY RESET SESSION TIMER - Checked

LOG Tab:

ENABLE LOG FILE - Checked (Personal Preference)

3-LINE ENTRIES - Checked (Personal Preference)

1 LOG FILE - Checked (Personal Preference)

ITEMS TO BE INCLUDED IN LOG - All Checked (Personal Preference)

SOUND Tab:

SOUND FILE PLAYED WHEN WARNING TIME IS EXCEEDED - Personal preference.  Choose a sound file you like, or clear the checkbox for none.

SOUND FILE PLAYED WHEN THE TIMER IS STARTED - Personal preference.  Choose a sound file you like, or clear the checkbox for none.  For best results, choose something short such as a Ding.

SOUND FILE PLAYED WHEN THE TIMER IS STOPPED - Personal preference.  Choose a sound file you like, or clear the checkbox for none.  For best results, choose something short such as a Ding, but different from the Start sound.

Many of these are personal preferences, so adjust them as you wish.

CONNECTION CONFIGURATION

There is no way to give a single example that will satisfy all possible Internet providers and BBS connections since they frequently vary in the amount of time you can use, etc.  For that reason, I'll profile two different Connections.  For these examples, we will assume that your copy of CCM30.EXE resides in C:\WINAPPS\UTILS.  It doesn't matter what directory it is actually in on your system.  Where the examples read C:\WINAPPS\UTILS, simply replace this with the actual directory on your system.

Example 1 - This is an Internet provider named "NETRIDER".  The service uses Trumpet Winsock for its TCP/IP stack, so scripting is available.  Your usage account allows for 40 hours of  Prime Time usage and 100 hours of total usage per month.  Prime Time is from 8:00am to 6:00pm local time Monday through Friday.

Click the list box title on the main dialog, and move down to [New Entry] and click this.  Then click the [EDIT] button beneath the list box to edit the connection.  In the first edit field labeled Connection Title enter NETSTAR SLIP Connection.  Since this is actually only the title that will be displayed in the list box, it can be anything you want it to be.

Since we are going to start THIS program from a script file, there is no need to have a "Launch" program set up.  The Enable Program Launch box should be unchecked.  If there is anything in the program name, it doesn't matter.

Since this particular Internet provider has limits set on how much time you can use, we do want to enable a warning for this Connection.  The Enable Warning box should be checked.  Likewise, since this Internet provider has Prime Time defined, the Enable Prime Time Monitoring checkbox should be checked.  Checking these two boxes will enable the Total Time and Prime Time fields in the Warning section of the dialog.  This particular Internet provider sets limits of 40 hours of Prime Time and 100 hours of Total Time, so set the Total Time field in the Warning section to 99:55:00.  This will cause a warning to be displayed 5 minutes before your time runs out.  Also set the Prime Time field in the Warning section to 39:55:00 to give yourself a five-minute warning before your Prime Time limit is reached.

Next we need to set the Prime Time parameters.  We stated above that our fictional Internet provider defined Prime Time as being from 8:00am to 6:00pm Monday through Friday.  In the Prime Time Monitoring section, set the Begin Time to 8:00:00 for 8:00am.  Set the End Time to 18:00:00 for 6:00pm (remember that these are expresses in 24-hour time).  Finally, make sure the checkboxes labeled M through F  are checked.

Since this provider limits time on a monthly basis, we can configure the program to reset its timers at the beginning of each month.  In the Timer Reset section, click the Monthly radio button to enable Monthly resets, and in the edit field beneath enter 1 to reset the timer on the first day of each month.

Since this is a new Connection, both the Total Connect Time and Total Prime Time fields should be set to 00:00:00.  No time has been logged for this Connection yet.

Click the [OK] button to save the edits and return to the main dialog.  The Listbox should now read "NETRIDER SLIP Connection".  Click the down arrow beside the list box to display all the Connections in it.  The first connection listed is "Index" number 1.  The second connection listed is "Index" number 2, and so forth.  We need to find the "Index" for the Connection that we just added so that we can set up a Script file to launch the program properly.  Starting at the top of the list, count down until you see the "NETRIDER SLIP Connection".  For this example, we'll assume that it is the fifth entry in the listing, so that would make it's "Index" number 5.

Next, we need to modify the script used to start Trumpet Winsock so that it will start the Connect Timer.  Use Notepad or another text editor to open the script file that you use to dial your Internet provider.  Normally this will be LOGIN.CMD in the same directory as TCPMAN.EXE.  If you use a different script, edit the file that you use.  Scroll down to the end of the file, and add a line that reads: EXEC "C:\WINAPPS\UTILS\CCM30.EXE 5".  The "5" at the end of the line is the "Index" number that we found in the paragraph above.  This tells the program to select the fifth "Index" in the list box when it starts.

With the program configured as outlined in these steps, here is what would happen:  Trumpet Winsock is started by clicking the TCPMAN.EXE icon to start TCPMAN.  If it is set up to login automatically, it will start executing the script file LOGIN.CMD.  If not, you may have to select the proper script file to execute.  For here, we'll assume that LOGIN.CMD is executed when TCPMAN is started.  The Script file will log into our Internet Provider, and once everything is connected, the EXEC command at the end of the script will start CCM30.EXE.

CCM30 will start with Index 5 selected since that it what we told it in the Script command.  Index 5, of course, points to the Connection we just set up.  Since we have the program set up for Start Minimized On Command Line Pass and we DID pass it a command line parameter (the "5" for index 5), it will start as an icon at the bottom of the screen.  It will stay on top of all other windows on the screen since we have Stay On Top turned on.  It will sense that the carrier to the modem is present, and start timing automatically.  The display on the icon will display the Total Connect time since we configured the Icon Display for Total.  When you hang up your modem (normally done through Trumpet's BYE script file), CCM30 will sense the loss of carrier and stop timing.  Since it was set up for Exit On Carrier Drop, it will exit at this point.  First though, it will display a dialog showing the session time and total accumulated time since Display Summary Dialog was enabled.

EXAMPLE 2 - For this example, let's assume that you use your normal communications software to connect to a BBS system.  The BBS has no Prime Time hours defined, but you are limited to 2 hours of connect time per day.  Further, your communications software has no means of starting a timer through a script file, so we will use CCM30 to start the communications software instead.

The GENERAL CONFIGURATION options established above will work fine for this setup also.  They are somewhat "Generic" values, and will allow you to do a lot with CCM30 with the least amount of effort on your point.

Click the list box title on the main dialog, and move down to [New Entry] and click this.  Then click the [EDIT] button beneath the list box to edit the connection.  In the first edit field labeled Connection Title enter Local BBS Connection.  Since this is actually only the title that will be displayed in the list box, it can be anything you want it to be.

Since we are going to start another program FROM this program, this time we DO need to have a "Launch" program set up.  The Enable Program Launch box should be checked.  In the edit field beneath, enter the name of the communications program.  If it resides in a directory that your path points to, you only need to enter the name of the program (i.e. QMODEM.EXE).  If the directory is NOT in your path, you will need to enter the complete path to the file (i.e. C:\COMM\QM\QMODEM.EXE).  This will set up a launch program, and enable the [LAUNCH] button on the main dialog.

Since this particular BBS provider has limits set on how much time you can use, we do want to enable a warning for this Connection.  The Enable Warning box should be checked.  However, since there is no Prime Time defined, we don't need that, so the Enable Prime Time Monitoring checkbox should be unchecked.  This will enable the Total Time but NOT the Prime Time fields in the Warning section of the dialog.  We are limited to 2 hours per day, so set the Total Time field in the Warning section to 01:55:00.  This will cause a warning to be displayed 5 minutes before your time runs out.

Since Prime Time Monitoring is not enabled, there is nothing to do in the Prime Time section.  In fact, everything is disabled so you can't do anything to it.

Since this provider limits time on a daily basis, we can configure the program to reset its timers at the beginning of each day.  In the Timer Reset section, click the Daily radio button to enable Daily resets, and in the edit field beneath enter 00:00 to reset the timer at the beginning of each day.

Since this is a new Connection, both the Total Connect Time and Total Prime Time fields should be set to 00:00:00.  No time has been logged for this Connection yet.

Click the [OK] button to save the edits and return to the main dialog.  The Listbox should now read Local BBS Connection and the [LAUNCH] button will be enabled.  Click the [LAUNCH] button and your communications program will start.  The [AUTO] button on CCM30 will also change to [STOP] to indicate that it is monitoring the modem's CD line.  Use your communications software to dial your BBS normally, and as soon as you are connected to the other modem, the timer will begin to count.

When you log out, the timer will stop counting, but the program will NOT exit.  It doesn't exit automatically even though you have Exit On CD Drop enabled in the GENERAL CONFIGURATION because the Exit On CD Drop On Command Line Pass is enabled also.  This means that if, when the program was started, no parameters are passed on the command line, the Exit On CD Drop is ignored.  Since we didn't start the program from a Script file this time, we started it from a Program Manager Group, it stays up even when the carrier drops.

SUMMARY - You should be able to see from these two examples that there are numerous ways to configure the program so that it is most convenient for you to use.  You may still have to play with the options some to get them the way you want, but these two examples should point you in the right direction.


Passing Command Line Parameters
COMMAND LINE PARAMETERS

You can pass the number of the connection to be used on the command line to automatically start the program with a particular connection selected in the list box.  This is particularly handy for use in Script files, as used with Trumpet Winsock or other communications software, but it is not limited to Script file operation.  You can also set up your Program Manager icon to pass the parameters and start the timer the way you want it configured.  Simply follow the command to start the program with the list box index of the connection you want to use.  For example, it I wanted to start the program with Netcom selected, and Netcom was the third item in the list box, the command would be CCM30.EXE 3.

If anything is passed as a parameter to the program (even if it is an invalid value), AND if the program is configured for AutoStart mode, the program will automatically be started with the timer running.  This was done intentionally so that you could launch the program from within a script file (which will normally do all the dialing for you) without having to start the timer running yourself.  Remember that in AutoStart mode, the timers dont actually start changing value until a carrier to your modem is detected, so the time wont change until you are actually connected to the other modem.

If you use Script files to dial under Trumpet Winsock, you can edit the script command file to automatically start the program, and optionally select a particular connection.  Trumpet Winsocks Dialler menu (yes, it is spelled that way!) lists the script files in the same directory as TCPMAN.EXE.  Login is used as the default most of the time, but you may have others.  The Login script will be named LOGIN.CMD in the same directory as TCPMAN.EXE, and you can edit it with Notepad or a similar editor.

Lets say you have three accounts you use frequently, and have a Trumpet script set up for each of them.  Well call them Netcom, TNE, and Netstar.  You have this program set up so that Netcom is the second item in the list box, TNE SLIP is the first item in the list box, and NETSTAR is the third item in the list box.  Edit NETCOM.CMD, and at the end of the script file put the line EXEC CCM30.EXE 2 to start CCM30 running, and select the second list box item as the connection to be used.  Edit TNE.CMD, and at the end of the script add the line EXEC CCM30.EXE 1 to start the program with the first list box item selected.  Edit NETSTAR.CMD, and at the end of the script add the line EXEC CCM30.EXE 3 to start CCM30 with the third list box item selected.  This assumes that CCM30.EXE is in the same directory as TCPMAN.EXE.  If it isnt, include the complete path to the program as in EXEC C:\INTERNET\UTILS\CCM30.EXE 1.  Note in all cases the command line is enclosed in quotation marks.

You can also start the timer as described above AND launch a program that is specified in the Program Launch field of the EDIT dialog.  This is done in basically the same manner as specified above, but in this case you put the letter L in front of the connection number as in EXEC CCM30.EXE L1.  The command line shown here would start the timer, set it to Connection number one, and launch whatever program has been defined for Connection number 1.

To set up a Program Manager icon in this manner, use File Manager to Drag CCM30.EXE to the desired program group.  Just put the mouse cursor on top of the CCM30.EXE filename in File Manager, click the left mouse button and hold it down, then move the mouse to drag the filename to the desired program group.  When it is there, just  let go of the mouse button to add CCM30 to the program group. Next, click the icon ONCE to highlight it.  Dont start the program, just highlight it.  Click FILE on Program Managers menu, then PROPERTIES.  In the line that reads Command Line, move to the end and add the desired parameters.

If desired, you can also change the icon to that used by the program you intend to Launch.  Click Change Icon, then Browse for the program that you are Launching.  Select it, and you can pick the icon that is associated with the actual program to be launched.


Introduction To CCM30
INTRODUCTION

This program is a compact time monitor for use during communications sessions.  There are many very good examples of this type of program available as Shareware or Freeware, but all of them that I tried left something to be desired as far as my use goes.  This is not to say that they arent good, rather for what I do, I couldnt get them to do what I wanted.

My main gripes with most of the others I used were:

No multiple connections.  There was usually only one Connection allowed.  All time accumulated was posted to this account without being able to say I want this session posted to one account, and then change to another account for another session.  There are some programs available that allow multiple Connections, but most of them track cost whereas I was only interested in time.

Everybody is concerned with the cost of a session, and not the connect time of a session.  My Internet accounts are not Cost Based, they are Time Limited.  I have a certain amount of time each month (or day) that I can use, and all I want to know was how much TIME has been used during each session since it doesnt cost anything.

Many of the timer programs dont accumulate statistics.  In addition to the amount of time I spend connected, I wanted the total time accumulated for a certain period.  One of my accounts has a 2-hour per day limit, and another account has a 40-hour per month limit.  I wanted to be able to see the total accumulated time, and be able to quickly reset it.

No Automatic Start.  I wanted to be able to start the program, and let it decide when to start running based on my modem connection.

No Automatic Stop.  I wanted a way to automatically end the program automatically.  This one has that capability.  It can exit automatically in two different ways.  See  the Configuration and Whats New For Version 2 sections for further information.

No Control Over Minimized or Maximized Display.  Sometimes I want the full-size display, and sometimes I want a minimized display. This program offers you a choice in that it can be configured to start as an icon when launched from a script, and start full-sized when launched from a Program Group.

I could find lots of software that would do some of these things, but none that would do all, so I decided to write my own and CCM30 is the result.  Its main features are:

Multiple setups stored in one INI file.  You can have up to 32 connections stored.  Each is written into a single INI file that holds the name of the connection, and the total connect time.

The session ID can be passed on the command line.  This allows you to execute the program from within a Script file, and select the proper connection automatically.

Connect time is continually displayed and updated showing the current session time and the total accumulated time.

The session time and accumulated time can be reset by clicking one button.

Optional Automatic Start.  When enabled, the Automatic mode will watch the carrier detect line from your modem.  When the CD line goes high, at the beginning of a session, the timer starts.  When CD drops, the timer stops.

Optional Automatic Reset.  When enabled, the session time is automatically reset to zero each time a session is begun.  When disabled, the session time continues to accumulate, and is not reset to zero each time a session is begun.  You can also establish Resets for each Connection so that they are automatically reset on a daily, weekly or monthly basis.

Configurable for COM1 through COM4 (this is only pertinent in AutoStart mode.  In manual mode,  the serial port is unneeded).

Session time is displayed on the icon when the program is minimized.  If you have the program Minimized on your desktop, you can select one of four different displays for the Icon:  Session Time, Total Time Today, Total Prime Time, or Total Elapsed Time.

Program Launch.  If you want to set up a program to be launched from this program (kind of like a Reverse script) you can do so.  You can also use a Batch file with multiple commands in it.  You can also configure the program to Launch a Dial-Up Networking Connection.

Prime-Time Monitoring. If your Internet Provider or BBS has defined Prime Time and Non-Prime Time, you can set the program to differentiate between the two times.  Prime Time can be established for each day of the week individually.  An LED on the main dialog will be displayed to denote the Prime Time status (Green = Prime Time, Red = Non-Prime Time), and the Totals section of the display can be switched between Prime Time and Total time.

Numerous Start and Exit Options. You can configure the program to start as a normal dialog or an icon.  The Icon mode can be configured as a normal Windows-style icon or a small dialog that floats on your desktop.  You can also configure it to start timing when the program detects a carrier, then exit when the carrier drops.

Display Session Summary.  If the program is initially started as an Icon, you can set an option that will display a summary when the program exits.  This prevents you from having to look at your log file to see how much time you spent On-line.

Warning Feature - This function is very handy if you have a pre-set amount of time you can use.  As you near the end of your time period, the program will change the display characters to red, and optionally play a sound file to let you know that you are getting close to your limit.  The times can be set individually for each Connection.

Save Window Position.  This option causes the position of the main dialog to be retained between sessions.  Each time you start the timer, it will be in the same place on your desktop.

Stay On Top.  This feature, which is also optional, causes the programs display to remain on top of all other windows on your desktop.

Log File.  There are three different log record formats, and three different file type formats.  You can also completely disable the log file if you dont want one.

Clipboard Text Grabber.  This feature grabs text from the clipboard and writes it into a text file.  It is very handy for Grabbing text information from the Internet.  Please read the section below before you enable this feature!

CCM30 is Freeware.  You may freely distribute the software pursuant to the restrictions set forth in the Copyright and Disclaimer section.  I hope you enjoy the software, and if you have any problems (or even if you dont!) please let me know.  My address is in the Problem Reports section.

I can't take credit for all of the features since the ideas for most of them came from users.  I receive a lot of E-mail requesting additions or enhancements, and while I wont promise that they will all be added to future releases, I will promise that they will receive consideration.

If you like it (or even if you dont), drop me an E-mail message and let me know.

Scott Craig	SCraig@IX.Netcom.Com

June, 1995	Scott.Craig@Nashville.Com


Problem Reports
PROBLEM REPORTS AND/OR REACHING THE AUTHOR

If you have a problem with this software and want to file a trouble report, or if you simply want to send me a note, I can be reached at the following addresses:

SCOTT CRAIG            	EMail to SCraig@IX.Netcom.Com <- Primary Address

409 Jessie Drive	or Scott.Craig@Nashville.Com      <- Secondary Address

Nashville, TN  37211-3534

Please include the version of the software that you are running (it is displayed at the top of the screen, and as much information as you can about the problem you are having (the steps required to cause the problem, what happens, etc.)

Be sure to include your return address.  This is a 1-man operation not a business, so time is limited, but I WILL answer all letters or EMail received.  I am very interested in my software, and try very hard to write the best software that I can.  If you have problems, I want to know about it.  If you DON'T have problems, or have ideas as to how the program could be made better, I want to know about that too.  I very much appreciate your thoughts and input, and would like to hear from you.

Thanks Very Much .... Scott


Copyright And Disclaimer
COPYRIGHT INFORMATION and DISCLAIMER

This software is owned and copyrighted by the author, and is released as Freeware, and may be freely copied and distributed by any means pursuant to the following restrictions:

All programs, files, and sections remain intact and unmodified.

This software may NOT be distributed as part of Bundled software (including CD-ROM or diskette distribution of Shareware and/or Freeware software) for sale without the express written permission of the author.

No monetary reimbursement of any kind is received for the copying or distribution of the software.

In plain English, you can GIVE a copy to anybody you want to, but you cannot SELL a copy to anybody without my permission.

DISCLAIMER

This software is provided on an as-is basis.  Neither the author nor any distributor of this software offer any  warranty of any kind, nor accept responsibility for any  damages of any type incurred through or by the use of this software.  Through and by the use of this software, you accept all responsibility for any damages incurred or thought to be incurred by using this software.

This software and all associated files are:

COPYRIGHT, 1995, SCOTT CRAIG

ALL RIGHTS RESERVED


DOUBLE CLICK

To Double Click an item, position the mouse cursor on the desired item, and click the left mouse button TWICE in quick succession.


No Help Available

No help is available for this area of the window.


No Help Available

No help is available for this message box.


Connections List Box

This is the section that allows you to select which "Connection" you want to use for the current session.  Click on the down arrow and the available Connections will be displayed.  If you have not defined any Connections, the only one will be [New Entry].  Click the [EDIT] button beneath the list box and you can define the connection.  If more than one Connection is displayed, "Click" the desired Connection to make it active.  It will then be displayed in the list box, and the values associated with it will be loaded.


Edit Button

This button causes the Connection Configuration dialog to be displayed.  This dialog allows editing of all the values associated with a particular Connection.


Launch Button

This button causes the program associated with a particular Connection to be started when it is clicked.  If no program is associated with the Connection in the Connections dialog, this button will not be enabled.


Carrier Detect LED

This LED will be displayed when AutoDetect is enabled.  When it is green, a carrier has been detected.  When it is red, no carrier is present.


Prime Time Indicator

This indicator shows whether the current system time indicates that it is Prime Time or not.  For this indicator to be enabled, you must have Prime Time configured for the selected Connection in the [EDIT] dialog for the Connection.  When the current system time indicates that it is Prime Time, the LED to the left will be green, and when it is not Prime Time, the LED will be red.  If Prime Time is not enabled, the LED as well as the text will be grayed as shown here.


Session Time / Daily Total Display Section

This section of the display displays either the Session time (the time that has elapsed since the timer began running) or the Accumulated Daily Total.  Either value can be reset to zero by clicking the [RESET] button.  Clicking the left mouse button anywhere in this section will also cause the display to switch between the daily Total time and the Session Time. Either the value shown in this frame or the one shown in the Total / Prime Time frame will be displayed on the icon when the program is minimized.  The Icon mode is also selected by clicking anywhere in the frame.  The frame that will be displayed is displayed in blue, and within brackets (as in [Session]).


Total Time / Prime Time Display Section

This section of the display displays either the TOTAL ACCUMULATED time or the TOTAL ACCUMULATED PRIME time depending on the setting of the radio buttons above. It can be reset to zero by clicking the [RESET] button.  Either the value shown in this frame or the one shown in the Session / Daily Total frame will be displayed on the icon when the program is minimized.  The Icon mode is also selected by clicking anywhere in the frame.  The frame that will be displayed is displayed in blue, and within brackets (as in [Total]).


HELP Button

This button displays this help file.


ABOUT Button

This Button causes the program's "About" dialog to be displayed.  The About dialog provides information about the program version and copyright.


CONFIGURE Button

This Button displays the Configuration Dialog that allows setting the overall program options.  Options set on this dialog are applied to all "Connections".


START Button

This Button starts the timer running.  It may read AUTO depending on the settings of the AutoDetect mode in the Configuration Options.


EXIT Button

This Button ends the program.  The INI file will be updated with your current settings and connect times, and if the timer is still counting, it will be stopped.


Title String

This edit field allows you to enter the title to be associated with a particular Connection.  The value in this field is the title that will be shown in  the list box on the main dialog.


Entry Number

The entry number shown here is not an editable value, however it is the index number that you would use when launching this program from a Script file.


Enable Launch Checkbox

When this checkbox is checked, the program shown in the edit field below will be started when the [LAUNCH] button on the main dialog is clicked.  If this button is NOT checked, the [LAUNCH] button on the main dialog will NOT be enabled regardless of whether a program name is entered below or not.


Launch  Program Name

This field is the name of the program that you want to start executing when the [LAUNCH] button on the main dialog is clicked.  If the program is in a directory that lies in your "Path", you only need to enter the name of the program (i.e. CCM30.EXE).  If the program does not lie within your path statement, you will need to enter the full path to it (i.e. C:\WINAPPS\UTILS\CCM30.EXE).  If the Enable Launch Check box above is NOT checked, this function will NOT be enabled.


Launch Normal Program

When this checkbox is selected, the program launch is set for a normal program (i.e. an EXE program).  The program that is entered in the Launch Program Name field below will be executed when the [LAUNCH] button on the main dialog is clicked.


Dial-Up Networking Connection

When this checkbox is selected, the program launch is set for a Dial-up Networking connection instead of a normal program.  The value that is entered into the Launch Program Name Field is the EXACT name of the Dial-Up connection that you want to start.  The spelling and case of the value is important, so if you are in any doubt, click the [BROWSE] button and select the proper connection from the list box that is displayed.

When this checkbox is selected, the Batch File Name field will also be shown so that you can specify a separate Batch command file if desired.


Batch File Name

This field is shown only when the Dial-Up Networking Connection checkbox is selected.  It allows you to select the name of a file containing a group of commands that you would like to have executed after the connection is made.


Enable Warnings

This checkbox enables the Warning function.  The Warning function changes the color of the display and optionally plays a Sound file when your connect time gets to the limits set in the two fields below.  If this check ox is NOT checked, the Warning function will be disabled regardless of the values set below.


Total Warning Time

This field determines the total amount of elapsed connect time that will cause a Warning to be displayed.  When the total connect time reaches the value set here, the Warning will be given IF the Enable Warnings checkbox is set AND the Total Warning value is not set to 00:00:00.  You would normally want this value set slightly below the limits your connection has to allow time for you to finish what you are doing and log out.  If you are limited to 2 hours per day, you might want to set this value to 01:55:00 to give you a five minute "Grace Period".


Prime Warning Time

This field determines the total amount of elapsed Prime connect time that will cause a Warning to be displayed.  When the total Prime connect time reaches the value set here, the Warning will be given IF the Enable Warnings checkbox is set AND the Prime Time Warning value is not set to 00:00:00.  You would normally want this value set slightly below the limits your connection has to allow time for you to finish what you are doing and log out.  If you are limited to 2 hours per day, you might want to set this value to 01:55:00 to give you a five minute "Grace Period".


Session Warning Time

This field determines the total amount of elapsed Session connect time that will cause a Warning to be displayed.  When the total Session connect time reaches the value set here, the Warning will be given IF the Enable Warnings checkbox is set AND the Session Warning value is not set to 00:00:00.  You would normally want this value set slightly below the limits your connection has to allow time for you to finish what you are doing and log out.  If you are limited to 2 hours per day, you might want to set this value to 01:55:00 to give you a five minute "Grace Period".


Enable Prime Time Monitoring

This check box determines whether Prime Time monitoring is enabled or not.  If Prime Time Monitoring is enabled, you will be able to switch between Prime and Total time using the radio buttons on the main dialog.  Additionally, an "LED" will be displayed on the main dialog denoting whether it is Prime Time or not.  If it is currently Prime Time, the LED will be green; if it is not Prime Time, the LED will be red.  The limits of Prime Time are set in the controls below.


Prime Time Beginning

This field sets the time of day for each day at which your Prime Time period begins.  If all day is prime time, set this field to 00:00:00 and the ending time to 24:00:00.  The field is filled in in 24-hour time.  13:00:00 is 1:00:00 in the afternoon; 21:00:00 is 9:00pm; etc.  This field cannot be changed if the Enable Prime Time Monitoring check box is not enabled.


Prime Time Ending

This field sets the time of day for each day at which your Prime Time period ends.  If all day is prime time, set this field to 24:00:00 and the beginning time to 00:00:00.  The field is filled in in 24-hour time.  13:00:00 is 1:00:00 in the afternoon; 21:00:00 is 9:00pm; etc.  This field cannot be changed if the Enable Prime Time Monitoring check box is not enabled.


Prime Days

These seven check boxes denote the days of the week that your provider defines as Prime Time.  Any combination may be selected.  If the Prime Time Monitoring check box is not checked, you will not be able to change these buttons.


All Days Are The Same

This check box allows you to quickly fill in the values for prime time start and end values.  Check this box, and anything you enter in one field will also be entered in the other 6 corresponding fields.


RESET MODE

This set of buttons controls the Automatic Reset of the Total and Prime time.  The mode can be set to Not reset (None), to reset on a Daily basis, a Weekly basis, or a Monthly basis.  The value of the reset (time of day, day of week, or week of month) can be set in the edit field below AFTER a mode is selected.


RESET VALUE

The value of this field depends on the RESET MODE selected.  If RESET MODE is set to NONE, this field will be disabled.  If RESET MODE is set to DAILY enter the time of day in hours and minutes at which you want the timer to be reset (i.e. 00:00 for midnight or 18:30 for 6:30pm).  If RESET MODE is set to WEEKLY, enter the day of the week at which you want the timer to reset (it will reset at 00:00 on the selected day).  Values should be "Sunday", "Monday", "Tuesday", etc. or they can just be shortened to three characters as in "Sun", "Mon", "Tue".  The values are not case-sensitive.  If RESET MODE is set to MONTHLY, enter the date of the month on which you want the timer to be reset (i.e. 1 or 2 or 25).  The timers will be reset at 00:00 on the selected day.


Total Accumulated Hours

This value is the total accumulated time recorded for the particular connection.  If you want to change it, you can do so here.


Total Accumulated Prime Time

This value is the total accumulated Prime time recorded for the particular connection.  If you want to change it, you can do so here.  If the Prime Time Monitoring check box is not set, you will not be able to change this value.


Total Time Today

This value is the total time recorded for the particular connection today.  If you want to change it, you can do so here.


Total Session Time

This value is the session time recorded for the particular connection.  If you want to change it, you can do so here.  Keep in mind that if you have AutoReset enabled in the configuration options, this value will get reset to zero the next time you begin a session.


Total Time Reset Value

This is the value that will be used when the Total Time is reset either by an automatic reset or when you click the [RESET] button.  Normally it will be 00:00:00, but if you are using the CountDown feature, you can set this value to the maximum time allowed by your Internet Provider.


Today Time Reset Value

This is the value that will be used when the Total Time Today is reset either by an automatic reset or when you click the [RESET] button.  Normally it will be 00:00:00, but if you are using the CountDown feature, you can set this value to the maximum time allowed by your Internet Provider.


Prime Time Reset Value

This is the value that will be used when the Prime is reset either by an automatic reset or when you click the [RESET] button.  Normally it will be 00:00:00, but if you are using the CountDown feature, you can set this value to the maximum time allowed by your Internet Provider.


Session Time Reset Value

This is the value that will be used when the Session Time is reset either by an automatic reset or when you click the [RESET] button.  Normally it will be 00:00:00, but if you are using the CountDown feature, you can set this value to the maximum time allowed by your Internet Provider.


Delete

This button is used to delete the current Connection from your configuration.  If you click this button, you will be prompted to verify that you actually want to delete the connection.  If you click [YES], the connection will be deleted.  If [New Entry] is the currently selected Connection, this button will be disabled.


HELP

Clicking this button will display the help page for the selected Connection Tab page.


OK

Clicking this button will cause any changes you have made to be put into effect, and stored in the configuration file.


Cancel

Clicking this button will cause any changes you have made to be ignored.  The dialog will be closed, and any changes you made to the values will be discarded.


Auto Detect Mode

This check box selects the Auto Detect mode of operation, and enables the Serial Port Selection radio buttons.  For a description of Auto Detect mode versus Manual Mode, see the Configuration section of the help file.


Manual Mode

This check box selects the Manual mode of operation, and disables the Serial Port Selection radio buttons.  For a description of Auto Detect mode versus Manual Mode, see the Configuration section of the help file.


Serial Port Selection

This section is only enabled if Auto Detect mode is enabled.  These four buttons select the serial port to be monitored for a modem carrier.


Enable Clipboard Capture

This button enables or disables the Clipboard Capture function.  When it is checked, the capture function is enabled.  When it is unchecked the capture function is disabled.  Please read the pertinent section below before you enable this function!


Clipboard Capture File Name

This field allows you to select a file into which Clipboard text will be appended.  You can enter the file name directly here, or click the [BROWSE] button to select a file on disk. If the Enable Clipboard Capture button is not enabled, this field will not be enabled either.


Capture File Browse Button

Clicking this button will allow you to select a file on disk into which Clipboard text will be appended.  A standard File Open dialog will be displayed so you can select the file.  If the Enable Clipboard Capture button is not enabled, this button will not be enabled either.


Enable Capture Only When The Timer Is Running

It is HIGHLY recommended that this option be enabled because it enables the Clipboard Capture only when the timer is actually running (the numbers on the display are changing).  If the program is just on the screen with the timer actually running, the clipboard capture will not be enabled.  This allows normal Clipboard operation when you are not On-line.


Auto Reset Enabled

This button selects whether the Session time is reset to zero each time a session is started.  When the timer begins counting for a session, this value will be reset to zero just as if the [RESET] button had been pressed.  If this feature is NOT enabled, the session time will NOT be reset when a session is started.


Enable Log File

This feature, when enabled, causes a Log file to be created in the same directory as the program file, listing each connect session and the session time, total accumulated time, and total prime time.


Start Minimized

When this box is checked (enabled), the program will start as a "Minimized" display, or icon.  If this button is not checked, the program will start as a full-sized dialog box.


Start On Launch

When this option is on (the checkbox is checked), the program will automatically click the [START] button to start the timer when the [LAUNCH] button is clicked.


Start Minimized On Command Line Pass

This button modified the "Start Minimized" button so that the program is started as a minimized icon ONLY if a parameter is passed on the command line (as would probably be the case when the program is started from a script file).  If no command line parameter is passed, the program will start as a normal dialog box.


Exit On Carrier Drop

This button controls whether the program will exit when the carrier to the modem drops.  If it is checked, the program WILL exit when it looses a carrier detect.


Exit On Carrier Drop On Command Line Pass

This button modifies the function of the Exit On Carrier Drop so that it is only enabled if a parameter is passed on the command line (as would probably be the case when the program is started from a script file).  If no command line parameter is passed, the program will not exit when the carrier drops.


Display Summary Dialog

This button controls whether a summary dialog is displayed when the program exits.  If it is checked, a summary dialog will be displayed when the program exits from a minimized (iconic) state.  The dialog shows the session and total or prime time.


Save Window Position

If this button is checked, the screen position in which the dialog is located when the program exits is saved.  The next time the program is run, the dialog will be position in the same place on the screen.  The window position is ignored if the program is displayed as an icon.


Always On Top

This button controls whether the dialog (or icon) is always displayed on top of other windows.  If this button is checked, the program will always be displayed as the top-most window on your screen.


Display Interval

This value controls the internal timing of how often the time display is updated on your display, and it AutoDetect mode is enabled, how often the CD line is polled.  It has NO EFFECT on the accuracy of the timing other than the displayed value.  The time intervals are stored internally in 1/10ths of a second, and are displayed when this interval has elapsed.  980 denotes 980 milliseconds, or 980/1000 of a second.  Since there is normally a slight delay in the message queue on most systems, this will result in a display refresh of about 1 second, and is normally suitable for most applications.


Iconic Display Mode

This set of buttons controls whether the display used when the program is Minimized is a normal icon-type display, a floating dialog box, or a Taskbar Tray icon.  See the discussion below for more details.

When the Floating Dialog is displayed, you can click anywhere on the gray part of the dialog to redisplay the main dialog.

When the Taskbar Tray icon is used, you can right-click the icon for a time summary, left-click the icon to return to the main dialog, or hold the mouse cursor over the icon to display the current value.


Icon Font

This button allows you to select the font that you want to use on the Floating Dialog iconic display.  It will display the normal Windows font selection dialog, and you can select pretty much any font that you have on your system.  If you do not have Floating Dialog selected as the iconic display type, this option will not be enabled.


Warning Sound Enable

When this checkbox is checked, the Warning sound will be enabled.  When it is unchecked, the Warning sound will be disabled.


Start Sound Enable

When this checkbox is checked, the Start sound will be enabled.  When it is unchecked, the Start sound will be disabled.


Stop Sound Enable

When this checkbox is checked, the Stop sound will be enabled.  When it is unchecked, the Stop sound will be disabled.


Browse

Click this button to open the standard Windows File Open dialog to select a sound file to be used.


Test

Click this button to play the sound file that you have selected to determine if it is the one you want to use.


Warning Sound File

This section allows you to select a sound file to be played when the Warning time is exceeded.  You can either enter the name of the file in the edit field, or click the "Browse" button to select a file using the normal Windows File Open dialog box.  If Warnings are not enabled, this section will not be enabled.


Start Sound File

This section allows you to select a sound file to be played when the [START] button is clicked, or if the program is set for AutoDetect, a carrier is detected.  You can either enter the name of the file in the edit field, or click the "Browse" button to select a file using the normal Windows File Open dialog box.


Stop Sound File

This section allows you to select a sound file to be played when the [STOP] button is clicked, or if the program is set for AutoDetect, the carrier is dropped.  You can either enter the name of the file in the edit field, or click the "Browse" button to select a file using the normal Windows File Open dialog box.


Warning Interval

This value controls how often a sound is issued during a Warning period.  Enter a value in full minutes only.  Dont enter minutes and seconds, or fractional minutes


Minimize On Start

When this box is checked, the program will automatically minimize itself when the [START], [AUTO] or [LAUNCH] buttons are clicked.


3-Line Log Entries

This option causes the log file to have 3-line entries.  This is the default format, and is the easiest to read.


1-Line Text-Style Log Entries

This option causes the log file to have 1-line text-style entries.  This format generates log entries with all the information on a single line.  The format has spaces between the fields, and division characters in the date and time fields.


1-Line Data-Style Log Entries

This option causes the log file to have 1-line text-style entries.  This format generates log entries with all the information on a single line.  The format does NOT have spaces between the fields, and division characters in the date and time fields are removed.


Single Log File

This is the default format, and causes all log events to be logged to a single log file.  The file will be in the same directory as the program files, and have the name CCM30.LOG


2 Log Files

This format causes two log files to be maintained.  One contains all Prime Time events, and the other all Non-Prime Time events  The files will be in the same directory as the program files, and have the names CCMPRIME.LOG and CCMNOPRI.LOG.


Multiple Log Files

This format causes multiple log files to be maintained, one for each Connection.  The files will be in the same directory as the program files, and have the names CCM_01.LOG, CCM_02.LOG, etc.


Include Options

This group of buttons determines the information that is included in the log file.  Items that are checked will be included.  Items that are not checked will NOT be included.


OK

Clicking this button will cause any changes you have made to be put into effect, and stored in the configuration file.


Cancel

Clicking this button will cause any changes you have made to be ignored.  The dialog will be closed, and any changes you made to the values will be discarded.


Help

Clicking this button will cause this help file to be displayed with the Configuration section selected.


Enable Log File

Clicking this button turns Logging On and Off.  If the button is checked, sessions will be logged; if it is not checked, logging is disabled.  When logging is disabled, none of the other controls on this dialog can be changed.


Edit Log File

Clicking this button will start the Windows Notepad editor with the current log file loaded.  The file that will be opened depends on the Log File Mode selected.


Username

You will need to enter the username that you use to log in in this field.  It will automatically be saved so you will not have to enter it a second time unless you change it.


Password

You will need to enter the Password associated with the username that you use to log in in this field.  This value will automatically be saved only if the Save Password checkbox below it is checked. The password will be saved in the INI file in encrypted form to protect it from prying eyes, but remember if you are concerned about security, that the only truly secure password is one that is never saved anywhere!


Save Password

When this button is checked, the password entered above will be saved so you do not have to enter it next time. The password will be saved in the INI file in encrypted form to protect it from prying eyes, but remember if you are concerned about security, that the only truly secure password is one that is never saved anywhere!


Automatically Start To Dial

When this checkbox is checked, the dialer will automatically start dialing as soon as this dialog is activated.  By default this feature is not enabled, so you will have to check this box the first time through if you want the feature enabled.  If you have not entered a password, the setting of this box is ignored.


Status Information

During the connection process this line will display several status messages.  There are quite a few possible messages, and I provided informative strings for the most common ones.  If you receive a "Message: number" and want to know exactly what the message text for "number" is, send me an E-mail message and I'll let you know.


Dial Button

This button causes the dialer to start a connection attempt.  When it is clicked, the text on the button will change to "Cancel", and you can click the same button again to cancel the dialing process.


Exit Button

This button causes the dialing dialog to exit without attempting to make a connection.  If a connection is successfully made, the dialog will exit automatically.


Redial Enable

When this checkbox is checked, and a Busy Signal is detected when dialing, the connection will be attempted again in the number of seconds specified in the field to the right.  This function is ONLY executed on Busy signals.  Other network connection errors are not retried.


Redial Seconds

This field specifies the number of seconds that are waited between dialing attempts.  The Redial will only be enabled, and this field as well, when the checkbox to the left is checked.